package com.ihr360.payroll.service.salarytasklet;


import com.ihr360.common.DateRange;
import com.ihr360.payroll.calc.StaffSalaryCalcPeriod;

import java.util.Collection;
import java.util.Map;
import java.util.Set;

/**
 * 薪资应用相关服务接口
 * @author davidwei
 */
public interface SalaryReferenceDataService {

    /**
     * 通过员工薪资档案获取员工的 周期内的薪资分段情况
     * @param companyId
     * @param salaryReferences 依赖的服务信息（包含需要需要引用的服务的meta信息）
     * @param staffIds 员工数据
     * @param payrollPeriodRange
     * @param attendancePeriodRange
     * @return
     */
    Map<String, StaffSalaryCalcPeriod> loadSalaryPeriodsOfStaffs(String companyId, Set<String> salaryReferences, Collection<String> staffIds,
                                                                 DateRange payrollPeriodRange, DateRange attendancePeriodRange);

    /**
     * 通过员工薪资以外的其他服务的数据
     * @param companyId
     * @param references 依赖的服务信息（包含需要需要引用的服务的meta信息）
     * @param staffIds 员工数据
     * @param payrollPeriodRange
     * @param attendancePeriodRange
     * @return
     */
    Map<String, Map<String, Map<String, Object>>> loadReferencedDataOfStaffs(String companyId,Map<String, Set<String>> references, Collection<String> staffIds,
                                                                             DateRange payrollPeriodRange, DateRange attendancePeriodRange);
}